##############################################################################
# Python From Scratch
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Site: https://pythonfromscratch.com
#
# File: listing\chapter 09\09.1412 - No Title.py
# Description: No Title
##############################################################################
69 6d 70 6f 72 74 20 73 79 73 0a 69 6d 70 6f 72 import sys.impor
74 20 69 74 65 72 74 6f 6f 6c 73 0a 0a 0a 64 65 t itertools...de
66 20 70 72 69 6e 74 5f 62 79 74 65 73 28 69 6d f print_bytes(im
61 67 65 2c 20 62 79 74 65 73 5f 70 65 72 5f 6c age, bytes_per_l
69 6e 65 3d 31 36 29 3a 0a 20 20 20 20 66 6f 72 ine=16):. for
20 62 20 69 6e 20 69 74 65 72 74 6f 6f 6c 73 2e b in itertools.
62 61 74 63 68 65 64 28 69 6d 61 67 65 2c 20 62 batched(image, b
79 74 65 73 5f 70 65 72 5f 6c 69 6e 65 29 3a 0a ytes_per_line):.
20 20 20 20 20 20 20 20 68 65 78 5f 76 69 65 77 hex_view
20 3d 20 22 20 22 2e 6a 6f 69 6e 28 5b 66 22 7b = " ".join([f"{
76 3a 30 32 78 7d 22 20 66 6f 72 20 76 20 69 6e v:02x}" for v in
20 62 5d 29 0a 20 20 20 20 20 20 20 20 74 76 69 b]). tvi
65 77 20 3d 20 22 22 2e 6a 6f 69 6e 28 5b 63 68 ew = "".join([ch
72 28 76 29 20 69 66 20 63 68 72 28 76 29 2e 69 r(v) if chr(v).i
73 70 72 69 6e 74 61 62 6c 65 28 29 20 65 6c 73 sprintable() els
65 20 22 2e 22 20 66 6f 72 20 76 20 69 6e 20 62 e "." for v in b
5d 29 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 ]). print
28 66 22 7b 68 65 78 5f 76 69 65 77 7d 20 7b 22 (f"{hex_view} {"
20 22 20 2a 20 33 20 2a 20 28 62 79 74 65 73 5f " * 3 * (bytes_
70 65 72 5f 6c 69 6e 65 20 2d 20 6c 65 6e 28 62 per_line - len(b
29 29 7d 7b 74 76 69 65 77 7d 22 29 0a 0a 0a 69 ))}{tview}")...i
66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f f __name__ == "_
5f 6d 61 69 6e 5f 5f 22 3a 0a 20 20 20 20 77 69 _main__":. wi
74 68 20 6f 70 65 6e 28 73 79 73 2e 61 72 67 76 th open(sys.argv
5b 31 5d 2c 20 22 72 62 22 29 20 61 73 20 66 3a [1], "rb") as f:
0a 20 20 20 20 20 20 20 20 69 6d 61 67 65 20 3d . image =
20 66 2e 72 65 61 64 28 29 0a 20 20 20 20 70 72 f.read(). pr
69 6e 74 5f 62 79 74 65 73 28 69 6d 61 67 65 29 int_bytes(image)
0a